package org.example.controller;

import org.example.domain.Role;
import org.example.domain.response.ResponseResult;

public interface RoleController {

    /**
     * 获取所有角色信息
     */
    ResponseResult getAllRoles();

    /**
     * 修改用户角色
     * @param userId 用户ID
     * @param roleId 角色ID
     */
    ResponseResult updateUserRole(int userId, int roleId);

    /**
     * 修改角色信息及权限
     * @param role 角色信息
     */
    ResponseResult updateRoleById(Role role);

    /**
     * 新增角色
     * @param role 角色信息（角色名，角色关键字）
     * @return 完整的角色信息（包含角色ID）
     */
    ResponseResult saveRole(Role role);

    /**
     * 删除角色（仅能删除无权限角色）
     * @param roleId 角色ID
     */
    ResponseResult deleteRole(int roleId);

    /**
     * 分页查询角色
     * @param pageSize 页大小
     * @param currentPage 当前页
     */
    ResponseResult getRoleByPage(int pageSize, int currentPage);

    /**
     * 通过角色关键字查询
     * @param pageSize 页大小
     * @param currentPage 当前页数
     * @param roleKey 角色关键字
     */
    ResponseResult getRoleByRoleKey(int pageSize, int currentPage, String roleKey);
}
